class Solution {
public:
    vector<int>f1, f2;
    vector<int> singleNumber(vector<int>& nums) {
        int ans = 0;
        for (auto x : nums) {
            ans ^= x;
        }
        int idx = 0;
        for (int i = 0; i < 32; i++) {
            if (ans & (1 << i)) {
                idx = i;
                break;
            }
        }
        int ans1 = 0, ans2 = 0;
        for (auto x : nums) {
            if (x & (1 << idx))ans1 ^= x;
            else ans2 ^= x;
        }
        //cout<<"idx=="<<idx<<endl;
        // for(auto x:nums){
        //     if(x&(1<<idx))f1.push_back(x);
        //     else f2.push_back(x);
        // }
        // int ans1=0,ans2=0;
        // for(auto x:f1){
        //     ans1^=x;
        // }
        // for(auto x:f2){
        //     ans2^=x;
        // }
        vector<int>res;
        res.push_back(ans1);
        res.push_back(ans2);
        return res;
    }
};